﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using Carozos.BE;

namespace Carozos.DALC
{
    public class ProveedorDALC : SqlDataAccess
    {
        public bool insertProveedor(ProveedorBE pProveedor)
        {
            bool result = false;
            SqlCommand cmd = base.createCommand("INSERT INTO Proveedor(nombre_proveedor,dni,razon_social,ruc,telefono,direccion_proveedor) VALUES(@nombre,@dni,@razon_social,@ruc,@telefono,@direccion)");
            base.addInParameter(cmd, "@nombre", pProveedor.nombre);
            base.addInParameter(cmd, "@dni", pProveedor.dni);
            base.addInParameter(cmd, "@razon_social", pProveedor.razonSocial);
            base.addInParameter(cmd, "@ruc", pProveedor.ruc);
            base.addInParameter(cmd, "@telefono", pProveedor.telefono);
            base.addInParameter(cmd, "@direccion", pProveedor.direccion);
            base.executeNonQuery(cmd);
            result = true;
            return result;
        }

        public bool updateProveedor(ProveedorBE pProveedor)
        {
            bool result = false;
            SqlCommand cmd = base.createCommand("UPDATE proveedor SET nombre_proveedor=@nombre, dni=@dni, razon_social=@razon_social,ruc=@ruc,telefono=@telefono,direccion_proveedor=@direccion WHERE id_proveedor=@id_proveedor");
            base.addInParameter(cmd, "@id_proveedor", pProveedor.codigo);
            base.addInParameter(cmd, "@nombre", pProveedor.nombre);
            base.addInParameter(cmd, "@dni", pProveedor.dni);
            base.addInParameter(cmd, "@razon_social", pProveedor.razonSocial);
            base.addInParameter(cmd, "@ruc", pProveedor.ruc);
            base.addInParameter(cmd, "@telefono", pProveedor.telefono);
            base.addInParameter(cmd, "@direccion", pProveedor.direccion);
            base.executeNonQuery(cmd);
            result = true;
            return result;
        }

        public bool eliminaProveedor(int codigo)
        {
            bool result = false;
            SqlCommand cmd = base.createCommand("DELETE Proveedor WHERE id_proveedor=@codigo");
            base.addInParameter(cmd, "@codigo", codigo);
            base.executeNonQuery(cmd);
            result = true;
            return result;
        }

        public List<ProveedorBE> getProveedorByNombre(string pNombre)
        {
            List<ProveedorBE> lista = new List<ProveedorBE>();
            SqlCommand cmd = base.createCommandSP("GET_PROVEEDOR_BY_NOMBRE");
            base.addInParameter(cmd, "@pa", pNombre);
            using (SqlDataReader r = base.executeReader(cmd))
            {
                while (r.Read())
                    lista.Add(createObject(r));
            }
            return lista;
        }

        private ProveedorBE createObject(SqlDataReader reader)
        {
            ProveedorBE pro = new ProveedorBE(reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetString(3),
                reader.GetString(4), reader.GetString(5), reader.GetString(6));
            return pro;
        }
    }
}

